package com.ysx.common.repentity;

/**
 * 通用响应结果封装类
 * 用于封装接口返回的统一格式数据，包含业务状态、返回信息和具体数据内容
 * @param <T> 泛型参数，表示返回的具体数据类型
 */
public class CommonResp<T> {

    /**
     * 业务上的成功或失败
     */
    private boolean success = true;

    /**
     * 返回信息
     */
    private String message;

    /**
     * 返回泛型数据，自定义类型
     */
    private T content;

    /**
     * 无参构造函数
     * 初始化一个默认的成功响应对象
     */
    public CommonResp() {
    }

    /**
     * 全参构造函数
     * 根据指定的参数创建响应对象
     * @param success 业务执行是否成功
     * @param message 返回的信息描述
     * @param content 返回的具体数据内容
     */
    public CommonResp(boolean success, String message, T content) {
        this.success = success;
        this.message = message;
        this.content = content;
    }

    /**
     * 内容构造函数
     * 创建一个只包含数据内容的成功响应对象
     * @param content 返回的具体数据内容
     */
    public CommonResp(T content) {
        this.content = content;
    }

    /**
     * 获取业务执行状态
     * @return true表示业务执行成功，false表示业务执行失败
     */
    public boolean getSuccess() {
        return success;
    }

    /**
     * 设置业务执行状态
     * @param success 业务执行状态，true表示成功，false表示失败
     */
    public void setSuccess(boolean success) {
        this.success = success;
    }

    /**
     * 获取返回信息
     * @return 返回的信息描述
     */
    public String getMessage() {
        return message;
    }

    /**
     * 设置返回信息
     * @param message 返回的信息描述
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 获取返回的数据内容
     * @return 返回的具体数据内容
     */
    public T getContent() {
        return content;
    }

    /**
     * 设置返回的数据内容
     * @param content 返回的具体数据内容
     */
    public void setContent(T content) {
        this.content = content;
    }

    /**
     * 重写toString方法
     * 返回对象的字符串表示形式，包含所有字段信息
     * @return 对象的字符串表示
     */
    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("CommonResp{");
        sb.append("success=").append(success);
        sb.append(", message='").append(message).append('\'');
        sb.append(", content=").append(content);
        sb.append('}');
        return sb.toString();
    }
}

